<?php
namespace app\index\controller;

use app\backend\org\HeadTitle;
use \think\Db;
use app\backend\org\Crumbs;
use app\backend\org\Kv;
use PHPMailer\PHPMailer\PHPMailer;

/**
 * 联系我们控制器
 */
class Contact  extends \think\Controller
{
    public function index(){
        $type = input('type','1','htmlspecialchars');//默认是联系我们 1联系我们 2加入我们(此情况下可能有附件)
        $e_name = input('e_name','','htmlspecialchars');//第三个参数过滤
        $e_phone = input("e_phone","","htmlspecialchars");
        $code =  input("code","","htmlspecialchars");//leadStar@#$%
        if($code !="4DB7E437A10226C36AB1AC764E27ED94"){
            echo "非法调用！";exit;
        }
        //验证手机号码
        if(strlen($e_phone) == "11")//上面部分判断长度是不是11位
        {
          $t_phone = preg_match('#^13[\d]{9}$|14^[0-9]\d{8}|^15[0-9]\d{8}$|^18[0-9]\d{8}$#', $e_phone) ? true : false;
          if($t_phone===false){
              return json([
                  'code' => 4002,
                  'message' => "错误的手机号码"
              ]);
          }
        }else {
            return json([
                'code' => 4001,
                'message' => "长度必须是11位"
            ]);
        }

        $e_mailbox = input("e_mailbox","","htmlspecialchars");
        //验证邮箱
        $t_email = preg_match('#[a-z0-9&\-_.]+@[\w\-_]+([\w\-.]+)?\.[\w\-]+#is', $e_mailbox) ? true : false;
        if($t_email===false){
            return json([
                'code' => 4002,
                'message' => "邮箱格式错误"
            ]);
        }
        $secret="20BCD13502F106466C11226A3C6DD054";
        $name="7CA5E2C9387BFBC0CC8A0B7683FAE986";
        if($type=="1"){
            $e_message = input("e_message","0","htmlspecialchars");
            return json(
                $this->email([
                    "secret"=>$secret,
                    "name"=>$name,
                    "e_name"=>$e_name,
                    "e_phone"=>$e_phone,
                    "e_mailbox"=>$e_mailbox,
                    "type"=>$type,
                    "e_message"=>$e_message
                ])
            );

        }else if($type=="2"){
            $e_sex = input("e_sex","0","htmlspecialchars");
            if($e_sex == "1"){
                $e_sex = "男";
            }else if($e_sex == "0"){
                $e_sex = "女";
            }
            $e_brith = input("e_brith","0","htmlspecialchars");
            $e_city = input("e_city","0","htmlspecialchars");

            // 职位
            $e_job = input("e_job","","htmlspecialchars");

            // 接收附件
            $file = request()->file('e_attachment');
            // 移动到框架应用根目录/public/uploads/ 目录下
            if($file){
                $info = $file->move(ROOT_PATH . 'public' . DS . 'static' . DS .'img' . DS .'emails');
                if($info){
                    // 成功上传后 获取上传信息
                    // 输出 jpg
                    //echo $info->getExtension();
                    // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
                    $e_attachment=ROOT_PATH . 'public' . DS . 'static' . DS .'img' . DS .'emails' . DS . $info->getSaveName();
                    // 输出 42a79759f284b767dfcb2a0197904287.jpg
                    //echo $info->getFilename();
                }else{
                    // 上传失败获取错误信息
                    return json([
                       'code'=>4003,
                       'message'=> $file->getError()
                    ]);
                }
            }
            //$e_attachment = input("e_attachment","0","htmlspecialchars");

            return json(
                $this->email([
                "secret"=>$secret,
                "name"=>$name,
                "e_name"=>$e_name,
                "e_phone"=>$e_phone,
                "e_mailbox"=>$e_mailbox,
                "e_brith"=>$e_brith,
                "e_sex"=>$e_sex,
                "e_city"=>$e_city,
                "e_attachment"=>$e_attachment,
                "type"=>$type,
                "e_job" => $e_job
            ])
            );
        }
    }
    //联系我们邮件接口  grey$sia&kimo#ko   ki&miko@greysi#a
    private function email($e_data=[])
    {
        if(!($e_data["secret"]=="20BCD13502F106466C11226A3C6DD054" && $e_data["name"]=="7CA5E2C9387BFBC0CC8A0B7683FAE986")){
            echo "非法调用！";exit;
        }
        try {
            if($e_data["type"]=="1"){
                $toemail = 'service@genomicarebio.com';//定义收件人的邮箱    978085892@qq.com
                $from = 'Web CR';
            }else if($e_data["type"]=="2"){
                $toemail = 'gchr@genomicarebio.com';//定义收件人的邮箱  gchr@genomicarebio.com
                $from = 'Web HR';
            }

            $mail = new PHPMailer();

            $mail->isHTML(true);// send as HTML
            $mail->isSMTP();// 使用SMTP服务
            // $hello = $mail->getSMTPInstance()->hello("52.80.174.40") ;//向SMTP服务器发送HELO命令
            
            // $mail->SMTPDebug = 4;// 使用debug
            $mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
            $mail->Host = "smtp.partner.outlook.cn";// 发送方的SMTP服务器地址  smtp.exmail.qq.com "52.80.174.40"
            $mail->SMTPAuth = true;// 是否使用身份验证            
            $mail->AuthType = "STARTTLS";   //
            $mail->SMTPSecure = "tls";// 使用ssl协议方式  ssl,tls 这里必须使用 tls--应该是和 AuthType 有关的。
            $mail->Port = 587;// 163邮箱的ssl协议方式端口号是465/994   25
            $mail->Username = "web.notice@genomicarebio.com";// 发送方的邮箱用户名，就是你申请的SMTP服务使用的邮箱 wangying@justmarvel.cn
            $mail->Password = "GCuser1234,";// 发送方的邮箱密码，注意用邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码 1QAZ3edc
            $mail->setFrom("web.notice@genomicarebio.com", $from);// 设置发件人信息，如邮件格式说明中的发件人，这里会显示为Mailer(xxxx@163.com），Mailer是当做名字显示
            $mail->addAddress($toemail);// 设置收件人信息，如邮件格式说明中的收件人，这里会显示为Liang(yyyy@163.com) 第二个参数是名称
            $mail->addReplyTo($e_data["e_mailbox"], $e_data["e_name"]);// 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
            //$mail->addCC("xxx@163.com");// 设置邮件抄送人，可以只写地址，上述的设置也可以只写地址(这个人也能收到邮件)
            // 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
            // 设置邮件抄送人，可以只写地址，上述的设置也可以只写地址(这个人也能收到邮件)
            //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)

            $mail->Subject = "{$e_data["e_name"]} 的基本信息";// 邮件标题

            if($e_data["type"]=="1"){
                $mail->Body =   "<span>姓名：</span>{$e_data["e_name"]}<br/>
                                <span>手机：</span>{$e_data["e_phone"]}<br/>
                                <span>邮箱：</span>{$e_data["e_mailbox"]}<br/>
                                <span>留言：</span>{$e_data["e_message"]}<br/>";// 邮件正文
                //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容，如果不支持Html方式，就会用到这个，基本无用
               // $mail->msgHTML($content);
            }else if($e_data["type"]=="2"){
                $mail->Body =   "<span>姓名：</span>{$e_data["e_name"]}<br/>
                                 <span>手机：</span>{$e_data["e_phone"]}<br/>
                                 <span>职位：</span>{$e_data["e_job"]}<br/>
                                 <span>邮箱：</span>{$e_data["e_mailbox"]}<br/>
                                 <span>性别：</span>{$e_data["e_sex"]}<br/>
                                 <span>生日：</span>{$e_data["e_brith"]}<br/>
                                 <span>城市：</span>{$e_data["e_city"]}<br/>";// 邮件正文
                $mail->addAttachment($e_data["e_attachment"]);// 添加附件
            }

            if(!$mail->send()){// 发送邮件
                return [
                    'code' => 4002,
                    'imsg' => 'Message could not be sent.',
                    'message' => "Mailer Error: ".$mail->ErrorInfo  // 输出错误信息
                ];
            }else{
                return [
                    'code' => 200,
                    'message' => '邮件发送成功'
                ];
            }
        } catch (\Exception $e) {
            //		$this->_log2db('index::被 catch 了');
            return [
                'code' => 2333,
                'imsg' => '被catch',
                'message' => '邮件发送失败' . $e->getMessage(),
            ];
        }
    }

    //加入我们详情接口
    public function address(){
        try{
            $menu_id = input('menu_id', '-1', 'htmlspecialchars');//第三个参数过滤
            //$contact_id = input('contact_id', '-1', 'htmlspecialchars');//第三个参数过滤
            $language = input("lang","cn","htmlspecialchars");
            if($language=="cn"){
                $menu_name = "menu_name_cn";
                $contact = "contact_cn";
                $title = "title_cn";
                $address = "address_cn";

            }elseif($language=="en"){
                $menu_name = "menu_name_en";
                $contact = "contact_en";
                $title = "title_en";
                $address = "address_en";
            }
            $menu_data =Db::query("select menu_id,p_id,$menu_name from ls_menu where `menu_id`= {$menu_id} and `delete_time` is null ");
            //获取联系我们的tab_name
            $contact_data =  Db::query("select con_id, p_id,type_id,$contact as tab_name from ls_contact where `p_id`={$menu_id} and `delete_time` is null");
            //获取位置信息
            foreach ($contact_data as $k=>$v){
                if($v["type_id"]=="1"){
                    $add_data = Db::query("select add_id, p_id,$title as title, $address as address from ls_address where `p_id`={$v['con_id']} and `delete_time` is null ");
                    $contact_data[$k]["child"] = $add_data;

                }
            }
            //print_r($menu_id);exit;
            //array_merge($qual,$resp);
            //print_r(array_merge($qual,$resp));exit;

            //调用headtitle查title内容
            $head_title = HeadTitle::title($menu_data, $menu_id, $language, "menu");
            // echo "<pre>";
            //print_r($head_title);exit;
            //调用kv类查kv画面内容
            $menu = Kv::Kv($menu_id);

            //获取面包屑
            $crumbs =  Crumbs::crumbs($menu_data,$menu_id,$language,"menu");
            //exit;
            // echo "<pre>";
            // print_r($crumbs);exit;
            // return json($crumbs);exit;
            //判断记录存不存在
            if( empty($menu)){
                return json([
                    'code' => 2555,
                    'message' => '不存在这个id',
                ]);
            }else{
                return json([
                    'code' => 200,
                    'head_title'=>$head_title,
                    'KV'=>$menu[0],
                    'crumbs'=>$crumbs,
                    'address'=>$contact_data,
                    "imsg" => "联系我们位置信息"
                ]);
            }
        }catch (\Exception $e){
//			$this->_log2db('index::被 catch 了');
            return json([
                'code'=>2333,
                'imsg'=>'被catch',
                'message'=>'数据库查询失败'.$e->getMessage(),
            ]);
        }
    }
}
